package com.ruoyi.system.service.h5;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.MiniSubject;
import com.ruoyi.system.domain.MiniSubjectHistory;
import com.ruoyi.system.domain.vo.h5.IncreaseRankingVO;
import com.ruoyi.system.domain.vo.h5.SubdivideSubjectVO;

import java.util.List;
import java.util.Map;

/**
 * @author :liding
 * @date : 2023/11/16 10:48
 */
public interface IAllSubjectService {
    /**
     * 题材列表
     * @return
     */
    AjaxResult<List<MiniSubject>> list(int i);

    /**
     * 子题材
     * @param parentId
     * @return
     */
    AjaxResult<List<MiniSubject>> childTree(Long parentId);

    /**
     * 点击题材进入题材排名
     * @param parentId
     * @return
     */
    AjaxResult<MiniSubject> childStockTree(Long parentId);

    /**
     * 细分题材
     * @return
     */
    AjaxResult<SubdivideSubjectVO> subdivideSubject();

    /**
     * 题材轮动
     * @return
     */
    AjaxResult<Map<String, List<MiniSubjectHistory>>> subjectCircle(String startDate, String endDate, String type);

    /**
     * 每日复盘
     * @param day
     * @return
     */
    AjaxResult dailyReplay(String day);

    /**
     * 新增概念
     * @param day
     * @return
     */
    AjaxResult addedStock(String day);

    /**
     * 财务排名
     *
     * @param subjectId
     * @param year
     * @param quarter
     * @param type
     * @return
     */
    AjaxResult financialRank(Long subjectId, String year, String quarter, String type);

    /**
     * 根据股票代码查题材图谱
     * @param stockNo
     * @return
     */
    AjaxResult<MiniSubject> getSubjectTree(String stockNo);

    /**
     * 利润表
     *
     * @param stockNo
     * @param quarter
     * @return
     */
    AjaxResult profitChart(String stockNo, String quarter);
    /**
     * 根据股票代码查所有相关题材
     * @param stockNo 股票代码
     * @return
     */
    AjaxResult<List<MiniSubject>> stockSubjectList(String stockNo);

    /**
     * 行业图谱
     * @param stockNo
     * @return
     */
    AjaxResult industryPie(String stockNo);

    /**
     * 情绪排名
     * @param subjectId
     * @param day
     * @return
     */
    AjaxResult emotionRank(Long subjectId, Integer day);

    /**
     * 涨幅排名
     *
     * @param
     * @param subjectId
     * @return
     */
    List<IncreaseRankingVO> increaseRanking(String day, Long subjectId);
}
